// 导出页面为PDF格式
import html2Canvas from 'html2canvas'
import JsPDF from 'jspdf'
import { Loading } from 'element-ui'
export default {
  install(Vue, options) {
    Vue.prototype.getPdf = function (dom, title = this.htmlTitle, scale = 2) {
      const loading = Loading.service({
        lock: true,
        text: '导出中',
        spinner: 'el-icon-loading',
        background: 'rgba(0, 0, 0, 0.7)'
      });
      // var title = this.htmlTitle
      // debugger
      html2Canvas(document.querySelector(dom ? dom : '#pdfDom'), {
        allowTaint: true,
        taintTest: false,
        useCORS: true,
        //width:960,
        //height:5072,
        dpi: window.devicePixelRatio * scale, //将分辨率提高到特定的DPI 提高四倍
        scale: scale //按比例增加分辨率
      }).then(function (canvas) {
        // const contentWidth = canvas.width
        // const contentHeight = canvas.height
        // // 一页pdf显示html页面生成的canvas高度;
        // const pageHeight = contentWidth / 592.28 * 841.89
        // // 生成pdf的html页面高度
        // let leftHeight = contentHeight
        // // 页面偏移
        // let position = 0
        // // a4纸的尺寸[595.28,841.89]，html页面生成的canvas在pdf中图片的宽高
        // const imgWidth = 595.28
        // const imgHeight = 592.28 / contentWidth * contentHeight
        // // canvas.crossOrigin="anonymous";
        // const pageData = canvas.toDataURL('image/jpeg', 1.0)

        // const PDF = new JsPDF('', 'pt', 'a4')
        // // 有两个高度需要区分，一个是html页面的实际高度，和生成pdf的页面高度(841.89)
        // // 当内容未超过pdf一页显示的范围，无需分页
        // if (leftHeight < pageHeight) {
        //   PDF.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight)
        // } else {
        //   while (leftHeight > 0) {
        //     PDF.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
        //     leftHeight -= pageHeight
        //     position -= 841.89
        //     if (leftHeight > 0) {
        //       // 避免添加空白页
        //       PDF.addPage()
        //     }
        //   }
        // }

        const contentWidth = canvas.width
        const contentHeight = canvas.height
        
        /* 导出不分页处理 */
        const pageData = canvas.toDataURL('image/jpeg', 1.0)

        const pdfWidth = (contentWidth + 10) / 2 * 0.75
        const pdfHeight = (contentHeight + 200) / 2 * 0.75 // 500为底部留白

        const imgWidth = pdfWidth
        const imgHeight = (contentHeight / 2 * 0.75) // 内容图片这里不需要留白的距离

        const PDF = new JsPDF('', 'pt', [ pdfWidth, pdfHeight, ])
        PDF.addImage(pageData, 'jpeg', 0, 0, imgWidth, imgHeight)
        PDF.save(title + '.pdf')
      }).finally(() => {
        loading.close();
      })
    }
  }
}
